package br.ufc.persistencia.Util;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

import br.ufc.persistencia.model.Despesa;

public class InterpretadorDespesaSAX extends DefaultHandler{

	private Despesa despesa;
	private List<Despesa> ListDespesas;
	private String temp;

		
	public Despesa getDespesa() {
		return despesa;
	}
	public void setDespesa(Despesa despesa) {
		this.despesa = despesa;
	}
	public List<Despesa> getListDespesas() {
		return ListDespesas;
	}
	public void setListDespesas(List<Despesa> listDespesas) {
		ListDespesas = listDespesas;
	}

	public InterpretadorDespesaSAX() {
		super();
		ListDespesas = new ArrayList<Despesa>();
	}

	
	
	/*
	private void Parser() {
		SAXParserFactory spf = SAXParserFactory.newInstance();
		SAXParser parser;
		try {

			parser = spf.newSAXParser();
			parser.parse("http://api.tcm.ce.gov.br/sim/1_0/municipios.xml", this);

		} catch (SAXException e) {
			System.out.println("SAX exception = [[" + e.getMessage() + "]]");
		} catch (IOException e) {
			System.out.println("I/O exception = [[" + e.getMessage() + "]]");
		} catch (ParserConfigurationException e) {
			System.out.println("ParserConfig exception = [[" + e.getMessage()
					+ "]]");
		}
	}
	
	*/

	
	public void startDocument() throws SAXException {
		 System.out.println("start document : ");
	}

	public void endDocument() throws SAXException {
		 System.out.println("end document  : ");
	}

	public void startElement(String uri, String localName, String qName,
			Attributes attributes) throws SAXException {
		if (qName.equalsIgnoreCase("despesa_categoria_economica")) {
			despesa = new Despesa();
		}
	}

	public void characters(char[] buffer, int start, int length)
			throws SAXException {
		temp = new String(buffer, start, length);
		// System.out.println(temp);
	}

	public void endElement(String uri, String localName, String qName)
			throws SAXException {
		if (qName.equalsIgnoreCase("despesa_categoria_economica")) {
			ListDespesas.add(despesa);
		}else if ("codigo_municipio".equalsIgnoreCase(qName)) {
			despesa.setCodigo_municipio(temp);
		} else if ("exercicio_orcamento".equalsIgnoreCase(qName)) {
			despesa.setExecicio_orcamento(temp);
		} else if (qName.equalsIgnoreCase("codigo_orgao")){
			despesa.setCodigo_orgao(temp);
		} else if (qName.equalsIgnoreCase("codigo_unidade")){
			despesa.setCodigo_unidadde(temp);
		} else if (qName.equalsIgnoreCase("codigo_elemento_despesa")){
			despesa.setCodigo_elemento_despesa(temp);
		} else if (qName.equals("nome_elemento_despesa")){
			despesa.setNome_elemento_despesa(temp);
		} else if (qName.equals("valor_total_fixado")){
			despesa.setValor_total_fixado(temp);
		}
	}
	
	
}


